假设我们有一个名为text.txt的文本文件。在这个text.txt文件中,我们可以找到以下3行:
test meow, hello one, two,
ten eleven
obelix, new
现在我只是想把每个单词的第一个字符大写,所以它应该是这样的:
Test Meow, Hello One, Two,
Ten Eleven
Obelix, New
我的代码正在这样做,但只有一个错误,我找不到。最后一个cout只给了我以下内容:
Obelix, New
所以之前的一切都不见了。你们能解释一下我在哪里犯的错吗?我希望德国人的评论不要把你弄糊涂。
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main(){
struct fileInformation
{
string sDatei;
string sPfad;
string sText;
int iStringMAX;
char cZeichen;
}fileinformation;
ifstream inFile;
cout << "Dateiname: ";
cin >> fileinformation.sDatei;
cout << "Pfad: ";
cin >> fileinformation.sPfad;
fileinformation.sPfad.append("\");
fileinformation.sPfad.append(fileinformation.sDatei);
inFile.open(fileinformation.sPfad);
if (inFile.is_open())
{
while (getline(inFile, fileinformation.sText))
{
cout << fileinformation.sText <<endl;
}
//Anzahl der Zeichen
fileinformation.iStringMAX = fileinformation.sText.size();
}
else
{
cerr << "Problem vorhanden" << endl;
exit(1);
}
for (int i = 0; i < fileinformation.iStringMAX; i++)
{
if (i == 0)
{
//Erstes Zeichen vom String in Character Variable speichern (Vorher auf Großbuchstabe)
//Tausche Kleinbuchstaben gegen unser Großbuchstaben aus
fileinformation.cZeichen = toupper(fileinformation.sText[i]);
fileinformation.sText[i] = fileinformation.cZeichen;
}
else if (isspace(fileinformation.sText[i]))
{
fileinformation.cZeichen = toupper(fileinformation.sText[i + 1]);
fileinformation.sText[i + 1] = fileinformation.cZeichen;
}
}
cout << fileinformation.sText;
return 0;
}
每次从输入文件中读取一行文本时,都会用这一行覆盖fileinformation.sText。然后你在最后一行进行大写,最后一行就打印出来了。您需要存储从文件中读取的每一行。
istream& getline (istream& is, string& str, char delim);
Note that any content in str before the call is replaced by the newly extracted sequence.