【问题标题】:Is there an output equivalent to getline(cin, x) on C++?在 C++ 上是否有与 getline(cin, x) 等效的输出?
【发布时间】:2011-01-10 20:14:39
【问题描述】:

我喜欢 getline(cin, x) 用于阅读内容的方式。与 cin >> x 不同,它不会弄乱缓冲区,而且似乎也允许使用 á、é 等欧洲字符。 我只是想知道是否有与此等效的输出,因为 cout

【问题讨论】:

  • 等等,什么平台,C++ 编译器和库?情况不应该如此。
  • 什么平台(操作系统、编译器、libc 版本、终端应用程序)?非 ASCII 字符的处理是非常特定于平台的。
  • Windows Vista(哎呀,不是我的电脑)和 VC++ 2010 Express,如果有帮助的话
  • 如果 x 是 std::string 那么 cout

标签: c++


【解决方案1】:

你可以试试std::wcout,它是为支持宽字符字符串而设计的,应该可以很好地处理欧洲字符。它的用法与 std::cout 相同,但您需要宽字符串字面前缀 'L':

std::wcout << L"My cool string.";

【讨论】:

  • L 不是宏。它内置在语言中。
  • 将宏更改为 unicode 文字,因为这就是它的意思。
  • Nitpick:这并不意味着 Unicode,它意味着宽字符。 Unicode 还使用了其他一些宽字符编码。
  • 不要对编码支持感到困惑。该语言(当前)与编码无关。终端如何解释编码完全是另一回事。
  • 所以我把它改成了“宽字符串字面前缀”。这并没有因为简洁而给我留下深刻印象,所以如果你知道更好的名字,请随意覆盖我的更改。
【解决方案2】:

有关 Windows 中的 Unicode 问题,请参阅 Michael Kaplan’s blog。对于控制台,尤其是以下帖子是相关的:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-21
    • 2019-03-12
    • 2018-02-22
    • 2021-04-30
    • 2017-01-01
    • 2023-03-30
    • 1970-01-01
    • 2013-10-16
    相关资源
    最近更新 更多