读取中间名是可选的文件
Posted
技术标签:
【中文标题】读取中间名是可选的文件【英文标题】:Reading a file where middle name is optional 【发布时间】:2013-10-06 15:53:28 【问题描述】:我正在尝试读取格式为
的文件firstName middleName(可选) lastName petName\n
由于中间名出现在一半的条目中,我不确定读取这些条目并将它们放入正确的变量名的最佳方法。任何帮助将不胜感激。
【问题讨论】:
我看不到 readdir 在这个例子中会有什么帮助,它只是列出目录中的文件和文件夹,不是吗?我正在使用 ifstream 读取文件,问题是我不确定字符串操作是什么。 我将您的问题误读为文件名的格式。 【参考方案1】:你可以这样做:
std::string line, word;
while (std::getline(myFile, line))
if (line.empty()) continue;
// read words from line:
std::istringstream is(line);
std::vector<std::string> words;
words.reserve(4);
for (int i = 0; is >> words && i < 4; i++)
words.push_back(word);
if (words.size() == 4)
// middle name was present ...
else
// it was not ...
【讨论】:
for (int i = 0; is >> words; i++)
或只是while (is >> words)
?
@0x499602D2:: 嘿,对不起。当我输入它时,我也想把 i < 4
放在那里,这样就不会再读到更多的字了。【参考方案2】:
如果只有 middleName 是可选的,您可以拆分行并将单词保留在 std::vector<std::string>
中。然后检查vector
的大小是否为4,那么你就有了middleName。如果 size 为 3,则不需要。
【讨论】:
以上是关于读取中间名是可选的文件的主要内容,如果未能解决你的问题,请参考以下文章
Swift:如果变量 a 是非可选的,那么为啥变量 b 是可选的? [复制]