从文件c ++中读取一个字符串

时间:2014-01-03 11:47:13

标签: c++ string file-handling

我正在尝试为我父亲的餐厅制作计费系统,仅供练习。所以,我面临的问题是我无法一次读取完整的字符串。如果在txt文件中有鸡汉堡而不是编译器读取它们但是将它们分成两个单词。 我正在使用以下代码,该文件已经存在。

std::string item_name;
std::ifstream nameFileout;

nameFileout.open("name2.txt");
while (nameFileout >> item_name)
{
    std::cout << item_name;
}
nameFileout.close();

3 个答案:

答案 0 :(得分:7)

要阅读整行,请使用

std::getline(nameFileout, item_name)

而不是

nameFileout >> item_name

您可以考虑重命名nameFileout,因为它不是名称,而不是输出。

答案 1 :(得分:3)

在内部逐行读取和处理行:

string item_name;
ifstream nameFileout;
nameFileout.open("name2.txt");
string line;
while(std::getline(nameFileout, line))
{
    std::cout << "line:" << line << std::endl;
    // TODO: assign item_name based on line (or if the entire line is 
    // the item name, replace line with item_name in the code above)
}

答案 2 :(得分:0)

您可以使用类似的方法将整个文件读入std::string

std::string read_string_from_file(const std::string &file_path) {
    const std::ifstream input_stream(file_path, std::ios_base::binary);

    if (input_stream.fail()) {
        throw std::runtime_error("Failed to open file");
    }

    std::stringstream buffer;
    buffer << input_stream.rdbuf();

    return buffer.str();
}