【发布时间】:2016-07-14 08:43:37
【问题描述】:
我正在尝试从只包含名称列表的 .txt 文件中读取数据。我想对每个名称执行以下操作:
1) read a name and store it in a string variable.
2) Add quotes to the name ("name")
3) make a map entry using each name (map["name"]= x)
我正在使用 std::getline 函数来读取每一行,并且我试图通过使用 ( string name="\""+line+"\"" ) 简单地添加引号。 问题是每次我在行字符串的末尾添加一些东西,什么都没有添加!
这是我的代码:
#include <iostream>
#include <string>
#include <map>
#include <fstream>
#include <stdlib.h>
using namespace std;
int main(){
ifstream reader("input.txt");
string line;
string name;
map<string,int> arr;
int np=5;
for(int i=0;i<np;i++){
getline(reader,line);
name="\"" +line +"\"";
cout<< name << endl;
}
return 0;
}
这是我的输入 txt 文件:
dave
laura
owen
vick
amr
这是我目前得到的输出:
"dave
"laura
"owen
"vick
"amr"
非常感谢!
【问题讨论】:
-
在输出中添加另一个
endl进行测试。我怀疑您的文件的行尾约定与您正在读取的系统不同。 -
您的代码在我看来运行良好。
cout << line << endl; cout<< name << endl;怎么样? -
如果我在 Linux 上运行,但在
input.txt中使用 DOS 行结束约定,那么它看起来很相似。额外的 CR 将最后一个双引号放在终端的最左侧。 -
不要使用
std::endl,除非你需要它做的额外的东西。'\n'结束一行。 -
您确定要添加引号吗?你不被字面符号弄糊涂了吗?
标签: c++ string fstream string-concatenation getline