过去几天,我一直在撞墙,想弄清楚如何在读取文件后为输出添加空间。代码从文件读取并输出到控制台“Ilikecomputers”,当它应该打印出“我喜欢计算机”时。有关如何添加空间的任何提示?
谢谢
代码在
之下#include <iostream>
#include <list>
#include <ctype.h>
#include <fstream>
using namespace std;
void printList(const list<char> &myList);
void fillList(list<char> &myList);
void changeCase(list <char> &myList);
void printList(const list<char> &myList)
{
list<char>::const_iterator itr;
cout << "\nAfter Conversion: " << endl;
for (itr = myList.begin(); itr != myList.end(); itr++ ) {
cout <<*itr;
}
cout << '\n';
}
void fillList(list<char> &myList)
{
ifstream file("test.txt");
string print;
while(file >> print){
for (int i = 0; i<print.length(); i++) {
myList.push_back(print[i]);
}
}
}
int main ()
{
list<char> myList;
cout << "Before Conversion: " << endl;
ifstream file("test.txt");
string print;
while(file >> print){
cout << print << " ";
}
fillList(myList);
printList(myList);
return 0;
}
答案 0 :(得分:1)
在阅读时,您需要指定std::noskipws
,否则>>
会跳过空格和其他空白字符。只需要把
file >> std::noskipws;
在阅读之前。
答案 1 :(得分:0)
你可以这样做:
void fillList(list<char> &myList)
{
ifstream file("test.txt");
string print;
while(file >> print){
for (int i = 0; i<print.length(); i++) {
myList.push_back(print[i]);
}
myList.push_back(' '); // this is what you were missing
}
}
或者您可以逐个读取字符并插入所有字符,而不是像operator >>
那样隐式地跳过空格。