我正在开发一个项目,我必须使用命令行重定向从文本文件中读取字典(即./myprog myargs< in.txt)
然后我将cin传递给一个函数来构造一个字典对象。
Private Sub dp_TextChanged(sender As Object, e As EventArgs) Handles dp.TextChanged
If dp.Text = "" Then GoTo line1
i = Asc(dp.Text)
If i = 8 Then
domainp.Text = domainp.Text.Remove(domainp.Text.Length - 1)
End If
If dp.Text = "" Or dp.Text = " " Or dp.Text = "." Then GoTo line1
domainp.Text = domainp.Text & dp.Text
domain_prefix = domainp.Text
dp.Text = ""
i = 0
line1:
End Sub
等
int main(int argc, char *argv[]) {
Dictionary all_words(std::cin);
Dictionary solution;
std::deque <Word> possible_additions;
std::cout << all_words[0].get_word() << " this is a word" << '\n';
opterr = true;
static struct option longopts[] = {
{ "stack", no_argument, nullptr, 's' },
{ "queue", no_argument, nullptr, 'q' },
{ "change", no_argument, nullptr, 'c' },
{ "swap", no_argument, nullptr, 'p' },
我的问题是没有任何内容被添加到词典中。但是,如果我使用文件名的ifstream初始化字典,它可以正常工作。
即:
Dictionary::Dictionary(std::istream& is) {
char type;
int size;
std::string line;
int i = 0;
is >> type >> size;
words.reserve(size);
while (!is.eof()) {
getline(is, line);
if (type == 's') {
if ((line.length() == 0 || line[0] == '/') &&
(line.length() == 0 || line[1] == '/'))
{
continue;
}
else {
std::cout << line << '\n';
words.push_back(line);
++i;
}
}
工作正常并构建字典。
使用MSVS时我没有遇到这个问题,但是现在我使用gcc它似乎无法正常工作。
感谢您的帮助!
答案 0 :(得分:0)
看起来像是eof()。从来没有意识到它可能导致的问题。将其更改为getline(is,line)修复它