Intellisense期待';'使用多行字符串文字

时间:2014-03-11 19:07:09

标签: c++ visual-studio-2013 stringstream stdstring string-literals

我正在尝试为我的程序创建一个linux手册页。我正在使用getopt来解析几个命令行参数和标志,其中一个可能是'h',它应该打印手册页然后退出。

我在VS 2013中编程,这个唠叨的小错误不会消失。根据intellisense,预计在“-c, - container \ n”这一行上会加一个分号。根据我对多行字符串文字的理解,你只需要在要放入std :: string的文本体后面加一个分号,这就是为什么这特别令人沮丧。

以下是我的代码:

case 'h':{
        string out;
        out = "NAME\n"
            "\tblah.\n"
            "SYNOPSIS\n"
            "\tmore text\n"
            "\tprogram (­-h | ­­--help)"
            "DESCRIPTION\n"
            "\ttext text text\n"
            "\tAI. mpre text\n"
            "\ttext\n"
            "\ttext.\n"
            "OPTIONS\n"
            "-h, --­­help\n"
            "\tPrint this help screen and exit.\n"
            ­"-c, --­­container\n"
            "\ttext\n"
            "\ttext\n"
            ­"text\n"
            "\ttext.\n"
            ­"-v, --­­verbose N\n"
            "\tdescriptions\n"
            "\tstatistics.\n"
            ­"-d, --­­debug\n"
            "\ttext\n";
        ss << out;
        cout << ss.str();
        cout.flush();
        exit(0);
        break;
    }

如何解决这个特别恼人的错误?提前谢谢。

1 个答案:

答案 0 :(得分:2)

当我复制并粘贴您的源代码时,我会得到一些奇怪的不可打印字符,包括"-c, --­­container\n"行上的一些字符。它们似乎是UTF-8编码的SOFT HYPHEN字符(UTF-8编码可能是您将代码复制并粘贴到Web浏览器中的工件)。过滤掉那些你应该没问题。