여기에 내가해야 할 일이 있습니다. 나는 C++로 문자열을 가지고있다. 문자열의 모든 줄에 대해 줄 시작 부분에 몇 개의 문자 (예 : ">>")를 추가해야합니다. 내가 고민하고있는 것은 문자열을 개행 문자 주위로 분할하고 문자를 추가하는 요소를 반복하며 문자열을 다시 결합하는 좋은 방법이다. strtok()
과 같은 몇 가지 아이디어를 보았습니다.하지만 C++ 문자열이 좀 더 우아 할 것으로 기대했습니다.문자열의 행을 반복합니다. C++
3
A
답변
9
를 사용해보십시오. 아마도 가장 효율적인 것은 아니지만, 이것이 핫 코드이거나 문자열이 거대한 경우가 아니면 괜찮습니다. 우리는 당신의 입력 문자열이 input
라고한다고 가정 :
#include <string>
#include <sstream>
std::string result;
std::istringstream iss(input);
for (std::string line; std::getline(iss, line);)
{
result += ">> " + line + "\n";
}
// now use "result"
2
당신의 문자열의 데이터 파일과 같은 기본적 인 경우, 여기에 솔직 솔루션의 std::stringstream
.
std::istringstream lines(string_of_lines);
std::ostringstream indented_lines;
std::string one_line;
while (getline(lines, one_line)) {
indented_lines << ">> " << one_line << '\n';
}
std::cout << indented_lines.str();
1
당신은 stringstream
에 포장 한 번에 선을 추출하는 std::getline
를 사용할 수 있습니다
std::string transmogrify(std::string const & in) {
std::istringstream ss(in);
std::string line, out;
while (getline(ss, line)) {
out += ">> ";
out += line;
out += '\n';
}
return out;
}
1
더 기능적 접근은 사용하는 것 이와 같이, this answer에 나타낸 모든 입력 선을 변환하는 std::transform
와 그 사용과 같은 getline
기반 반복자
std::string transmogrify(const std::string &s) {
struct Local {
static std::string indentLine(const std::string &s) {
return ">> " + s;
}
};
std::istringstream input(s);
std::ostringstream output;
std::transform(std::istream_iterator<line>(input),
std::istream_iterator<line>(),
std::ostream_iterator<std::string>(output, "\n"),
Local::indentLine);
return output.str();
}
,745,
indentLine
도우미가 실제로 줄을 들여 쓰고, 줄 바꿈은 ostream_iterator
에 의해 삽입됩니다.
+0
@Potatoswatter : 맞아요. 문구를 수정했습니다. –
관련 문제
- 1. VB.NET에서 문자열의 문자를 반복합니다.
- 2. GridView 행을 라벨로 반복합니다.
- 3. DataGridView, 예외가있는 모든 행을 반복합니다.
- 4. ADF richtable의 모든 행을 반복합니다.
- 5. 새 행을 제외하고 컬렉션의 모든 행에 반복합니다.
- 6. C# 클래스 속성을 반복합니다.
- 7. C# 사전에서 JSON을 반복합니다.
- 8. C++이 구조체를 반복합니다.
- 9. C 배열을 반복합니다.
- 10. 중첩 된 div의 테이블 행을 반복합니다.
- 11. 데이터 테이블의 특정 열의 행을 반복합니다.
- 12. 여러 열을 선택하고 선택한 행을 반복합니다.
- 13. 문자열의 첫 행을 읽으려면 어떻게해야합니까?
- 14. C# : 거대한 데이터 테이블을 반복합니다.
- 15. C++ : 제네릭 형식의 목록을 반복합니다.
- 16. ResourceManager의 모든 리소스를 반복합니다. C#
- 17. C++ 벡터가 추상 클래스를 반복합니다.
- 18. 문자열의 마지막 빈 행을 제거 하시겠습니까?
- 19. 문자열의 모든 단어를 포함하는 행을 반환하십시오.
- 20. C++ 문자열의 산술
- 21. URL 문자열의 C++ wininter.h '/'
- 22. C : 문자열의 일부분을 평가하십시오.
- 23. C# 문자열의 자릿수 교체
- 24. C 문자열의 위치 찾기
- 25. C 문자열의 해싱 함수
- 26. C - 문자열의 내용 확장하기
- 27. C++ : 문자열의 순열 나열
- 28. 문자열의 검색 문자열 C#
- 29. 문자열의 c 함수
- 30. C++ 문자열의 char *
희망이 있습니다. http://stackoverflow.com/questions/236129/splitting-a-string-in-c 도움이 될 수 있습니다. – halfelf