从文件中读取行并存储到变量中

Reading lines from a file and store into variable.

本文关键字:存储 变量 文件 读取      更新时间:2023-10-16

file.txt的内容

a
b
c
a
b
c1 x c2
d

a、 b、c、c1、c2、d都是一些值。

我的功能

void Menu::readFile() {
string line;
ifstream myfile ("file.txt");
if (myfile.is_open()) {
while (getline (myfile, line)) {
cout << line << "n";
}
myfile.close();
} else cout << "Unable to open file"; 
}

这只是返回文件的内容,如何读取文件并将每一行解析为变量。每个换行符都分隔对象。

void Menu::readFile() {
string line;
vector <string> lines;
ifstream myfile ("file.txt");
if (myfile.is_open()) {
while (getline (myfile, line)) {
cout << line << "n";
lines.push_back(line);
}
myfile.close();
} else { 
cout << "Unable to open file"; 
}
}

变量行将具有所有行。

此函数不会返回任何内容。它是声明的,因此不能返回任何值。您已经在逐个解析这些行了。现在不打印在这行:

cout << line << "n";

您应该将它们存储在某个容器中,例如std::vector<std::string>

最好使用列表或向量。下面是一个使用算法和迭代器的示例:

#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>
int main() {
std::vector<std::string> vals;
std::copy(
std::istream_iterator<std::string>(std::cin),
std::istream_iterator<std::string>(),
std::back_inserter(vals)
);
// Print them out, appending a newline to each word
std::copy(
vals.begin(),
vals.end(),
std::ostream_iterator<std::string>(std::cout, "n")
);
}

您可以将任何std::istream对象初始化替换为std::istream_iterator;特别是您的CCD_ 5变量。默认构造函数(空parens)构造流结束迭代器。