0

我有一个结构向量。

struct myStruct{
string text;
int num;
};

vector<myStruct> foo;

我正在尝试打印文本,后跟一个空格,然后是数字。像这样:

美食吧 5

但是当尝试使用打印我的矢量时

ofstream outputFile;
outputFile.open ("file.txt");

for(int i = 0; i < foo.size(); i++) {
        outputFile << foo[x].text << " " << foo[x].num << endl;
    }

它打印像

foobar  
 5 
moretext  
 8

带有额外的换行符和空格。我不知道如何摆脱它并将其打印在同一行。有什么建议么?

4

3 回答 3

0

您可以检查 foo[x].text 是否包含 \r 或 \n。

于 2013-10-10T03:13:14.210 回答
0

“我正在使用 getline(input, foo.text)。所以它应该丢弃换行符”

std::getline()input如果您的流具有 Windows 样式的换行符 (CRLF),并且您在 unix 上使用具有 LF 的程序,则在 end 添加一个回车符

你需要修剪它,使用一些像:

foo.text.erase(foo.text.find_last_not_of("\n\r")+1);

于 2013-10-10T03:15:11.333 回答
0

一种技巧是在将字符串传递给 outputFile 之前合并字符串。

或者

您是否尝试过使用 open() 方法设置模式?例如

outputFile.open ("file.txt", std::ofstream::out | std::ofstream::app);

于 2013-10-10T03:45:28.453 回答