c++ ifstream to char *
c++ ifstream to char *
我的代码使用 ifstream 读取文件并解析它,现在我更改了一些东西,我不需要读取文件,'因为是从另一个地方读取的,所以我有一个字符*代替 ifstream...如何在使用 ifstream.get() 的地方更改我的代码?再次感谢
你只是把你的char *
放进一个std::stringstream
。
std::stringstream buffer(your_string);
然后,您可以像使用std::ifstream
一样使用buffer
(您无法打开或关闭它)。理想情况下,您的parse方法将对std::istream
的引用作为参数,然后它不会介意它接收哪种输入流:
void parse(std::istream & input);
由于std::ifstream
和std::stringstream
都继承自std::istream
,因此您可以将它们作为参数传递,并且您的解析器无需修改即可运行。
#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
. 或只需创建一个简单的memory_streambuf
,带有imemorystream
和omemorystream
:如果你不需要双向,也不需要支持寻求,memory_streambuf
少于 10 行代码,始终有用,并且省略了其他解决方案的很多复杂性。(当然,如果您只执行此操作一次,请使用现有解决方案是首选。 但我发现memory_streambuf
在许多案例。
相关文章:
- 如何解决"invalid conversion from 'char' to 'const char*'"
- Writing Char to Arduino EEPROM
- memcpy unsigned char to int
- 如何修复C++中的'cannot convert char to char*'错误?
- 返回"Cannot convert from 'std::ofstream {aka std::basic_ofstream<char>}' to bool"错误
- 使用strupr和strlwr时如何解决错误"invalid conversion of char to char*"?
- C++ cast char * to unsigned char
- Char to Int - C++
- Qt char* to QString
- 找不到错误"invalid conversion from char to const char*"的解决方案
- nameless char[] to std::string& reference
- atoi() - from char to int
- Unicode const char* to JString using JNI and C++
- 了解错误"error: cannot convert ‘char**’ to ‘const char*’ for argument ‘1’ to ‘double atof(const char*)’"
- const char* to LPCWSTR in Qt
- "incompatible types in assignment of 'char' to 'char'[100]"我使用的是 strcat 对吗?
- const char * to vector<unsigned char> Initalisation
- c++ const char* to char*
- 引起'Cannot convert from const char * to char *'
- char to char* issues