我有一个名为firstFileStream[50]
的char数组,它使用fstream从infile写入。
我想将此char数组转换为名为firstFileAsString
的字符串。如果我写string firstFileAsString = firstFileStream;
它只会写入数组中的第一个单词并停在第一个空格或空字符处。如果我写firstFileAsString(firstFileStream)
,我会得到相同的输出。
如何将整个char数组(包括其中的所有单词)写入字符串?
以下是读入和写入的代码:
string firstInputFile = "inputText1.txt";
char firstFileStream[50];
ifstream openFileStream;
openFileStream.open(firstInputFile);
if (strlen(firstFileStream) == 0) { // If the array is empty
cout << "First File Stream: " << endl;
while (openFileStream.good()) { // While we haven't reached the end of the file
openFileStream >> firstFileStream;
}
string firstFileAsString = firstFileStream;
}
答案 0 :(得分:0)
我的问题,正如zdan指出的那样,我只是在阅读文件的第一个单词,所以我使用istreambuf_iterator<char>
将内容直接分配给字符串而不是首先是字符数组。然后可以将其分解为字符数组,而不是相反。
答案 1 :(得分:0)
openFileStream >> firstFileStream;
只从文件中读取一个单词。
读取整个文件的简单示例(至少达到缓冲容量)如下所示:
openFileStream.read(firstFileStream, sizeof(firstFileStream) - 1);
// sizeof(firstFileStream) - 1 so we have space for the string terminator
int bytesread;
if (openFileStream.eof()) // read whole file
{
bytesread = openFileStream.gcount(); // read whatever gcount returns
}
else if (openFileStream) // no error. stopped reading before buffer overflow or end of file
{
bytesread = sizeof(firstFileStream) - 1; //read full buffer
}
else // file read error
{
// handle file error here. Maybe gcount, maybe return.
}
firstFileStream[bytesread] = '\0'; // null terminate string