读取中间名是可选的文件

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 &gt;&gt; words; i++) 或只是while (is &gt;&gt; words)? @0x499602D2:: 嘿,对不起。当我输入它时,我也想把 i &lt; 4 放在那里,这样就不会再读到更多的字了。【参考方案2】:

如果只有 middleName 是可选的,您可以拆分行并将单词保留在 std::vector&lt;std::string&gt; 中。然后检查vector 的大小是否为4,那么你就有了middleName。如果 size 为 3,则不需要。

【讨论】:

以上是关于读取中间名是可选的文件的主要内容,如果未能解决你的问题,请参考以下文章

打字稿中的可选属性类

函数声明式与函数表达式的区别

使用 'var' 声明变量是可选的吗? [复制]

Swift:如果变量 a 是非可选的,那么为啥变量 b 是可选的? [复制]

为啥 UITableViewCell textLabel 属性是可选的?

RESTful API 设计:更新 (PUT) 中的不可更改数据是不是应该是可选的?