내 코드가 ifstream을 사용하여 파일을 읽고 구문을 분석하면 파일을 읽을 필요가 없습니다. 다른 곳에서 파일을 읽을 필요가 없으므로 대신 char *가 있습니다. ifstream ... ifstream.get()을 사용하는 곳에서 코드를 어떻게 바꿀 수 있습니까? 다시 감사합니다.C++ ifstream to char *
답변
char *
을 std::stringstream
에 넣기 만하면됩니다.
std::stringstream buffer(your_string);
당신은 (당신이 열 수 없습니다 나 닫을) 그것이 std::ifstream
이었다 거의 같은 buffer
를 사용할 수 있습니다. 이상적으로, 당신의 구문 분석-방법은 매개 변수로 std::istream
에 대한 참조를 취할 것, 그것은 상관 없어의 종류는 수신 입력 스트림 무엇 :
std::istream
에서 모두
std::ifstream
및
std::stringstream
상속 이후
void parse(std::istream & input);
, 당신이 그들을 전달할 수 있습니다 파서가 수정없이 실행됩니다. 다른 사람이 말했듯이
#include <sstream>
#include <fstream>
#include <iostream>
using namespace std;
void mung(istream & is) {
char c;
while(is >> c) {
cout << c << endl;
}
}
int main(int argc, char *argv[]) {
if (argc > 1) {
ifstream ifs(argv[1]);
mung(ifs);
}
else {
istringstream iss("here is some text to mung");
mung(iss);
}
}
, 당신은 std::istringstream
을 사용할 수 있지만,이 경우에는 나는 사용되지 않는 (그러나 항상 존재) std::istrstream
을 선호하는 것입니다. 또는 는 단순히 imemorystream
및 omemorystream
으로, 간단한 memory_streambuf
를 만들 : 당신은 양방향이 될 필요가없는 경우,도 지원 추구의 memory_streambuf
항상 , 유용한 코드의 10 개 라인이다, 그리고 밖으로 잎 다른 솔루션의 복잡성이 많습니다. (만 이 선호된다 기존 솔루션을 사용, 물론, 한 번이 일을하고 있습니다.하지만 에서 다수의 경우 유용하게 memory_streambuf
을 발견 한 경우.)
관심사로서 왜 istrstream에 대한 선호도가 있습니까? –
@unaperson 단순함. 어쩌면 버릇도 있지만,'char []'("char *"가 가리킨다)가 있다면,'istrstream'은 그것을 직접 사용할 수 있습니다. 'istringstream'은'string' 으로의 변환을 필요로합니다. 큰 문제는 아니며'istrstream'을 사용할 수 없다면'istringstream'을 사용할 것입니다. 그렇기 때문에 필요로하는 것을 정확히 할 수있는 스트림을 사용하지 않을까요? (출력을 위해, 차이가 더 중요합니다. 왜냐하면'ostrstream'이 멈추고 너무 많은 문자를 출력 할 때 오류를 선언하기 때문입니다.) –
- 1. 텍스트 파일을 char 배열로 읽어들입니다. C++ ifstream
- 2. Char to char *
- 3. vb.net byte [] to C++ char *
- 4. C++의 ifstream 위치
- 5. ifstream 방법
- 6. NSString to char []?
- 7. const char * to LPTSTR
- 8. UnicodeString to char * (UTF-8)
- 9. ifstream object.eof()
- 10. 함수에서 ifstream 반환하기
- 11. c char []
- 12. ifstream 및 ofstream의 filebuf
- 13. C++ LPCTSTR에서 const char *
- 14. C++ : 텍스트 파일 이름에 문자열을 전달하는 ifstream 문제가 열려 있습니다.
- 15. C++ 문자열의 char *
- 16. C++ char 질문
- 17. C++ : cin을 ifstream 변수에 할당 하시겠습니까?
- 18. C++ ifstream 멤버에 getline을 올바르게 사용하려면 어떻게해야합니까?
- 19. C *에서 char * 인쇄
- 20. C++ : function arg char ** is char * []
- 21. Java char 리터럴을 C# char 리터럴로
- 22. C++ char 배열을 int로, int를 char 배열로
- 23. C++ enum from char
- 24. C++, get 및 >> for ifstream 사용
- 25. char 포인터에 char 저장
- 26. ifstream 멤버를 보호
- 27. 부호없는 char * buffer to System :: Drawing :: Bitmap
- 28. C/C++ casting 문제, unsigned char from char
- 29. C++, char 배열을 잘라냅니다.
- 30. C char 배열 선언 *
왜'stringstream'하고, 'istringstream' 아닌가요? 왜 그가 필요하지 않은 복잡성이 추가 되었습니까? –
@James : 좋은 지적입니다. 'ostringstream' 또는'istringstream'만으로도'stringstream'을 항상 사용하는 것은 나에게 나쁜 습관이라고 생각합니다. –
카우보이 감사합니다! 잘 작동하고 너무 많은 코드를 변경하지 않았습니다! – ghiboz