如何读取多个 wstring 行?
How can I read multiple wstring lines?
是否可以读取多行国际字符?我可以用简单的 ascii 字符串做到这一点:
#include <iostream>
#include <string>
void main ()
{
std::string text{};
//I cannot use std::wcin in that manner
//std::wcout << "Enter any arbitrary text terminated by an asterisk:" << std::endl;
//std::wstring wtext{};
//std::getline (std::wcin, wtext, '*');THIS SPECIFIC LINE DOESN'T COMPILE
std::cout << "Enter any arbitrary text terminated by an asterisk:" << std::endl;
std::getline (std::cin, text, '*');
}
如何使用支持国际字符的字符串类型实现相同的目的?
按照要求,我包含了无法编译的行。
我的疑问是:还有别的办法吗?
错误是:没有重载函数“std::getline”的实例匹配参数列表
已解决。请注意已接受的答案中存在 L
前缀 '*'
。在我使用 wcin
和 wstring
(会产生编译错误的那个)对 std::getline
的注释掉调用中,我忘记使用 wchar_t
文字并使用了 char
文字代替。因此类型不匹配(string
由 char
、wstring
和 wchar_t
组成——又名宽字符)。要表示宽字符文字,需要添加 L
作为前缀,即 L'*'
.
这里是一个使用 std::wstring
、std::wcin
和 std::wcout
的例子
顺便提一下:you shouldn't mix std::cin
、std::cout
、std::cerr
和 std::wcin
、std::wcout
、std::wcerr
。如果您选择使用 std::wcin
,请仅使用 std::wcin
、std::wcout
、std::wcerr
编辑:如果你在 std::getline
中使用 std::wcin
,所有参数都必须是宽的,因为 std::getline
只得到一个字符类型的模板参数,并多次使用它: 对于流、输出字符串和分隔符。
#include <iostream>
#include <string>
int main ()
{
std::wstring text{};
std::wcout << L"Enter any arbitrary text terminated by an asterisk:" << std::endl;
std::getline (std::wcin, text, L'*');
}
是否可以读取多行国际字符?我可以用简单的 ascii 字符串做到这一点:
#include <iostream>
#include <string>
void main ()
{
std::string text{};
//I cannot use std::wcin in that manner
//std::wcout << "Enter any arbitrary text terminated by an asterisk:" << std::endl;
//std::wstring wtext{};
//std::getline (std::wcin, wtext, '*');THIS SPECIFIC LINE DOESN'T COMPILE
std::cout << "Enter any arbitrary text terminated by an asterisk:" << std::endl;
std::getline (std::cin, text, '*');
}
如何使用支持国际字符的字符串类型实现相同的目的?
按照要求,我包含了无法编译的行。 我的疑问是:还有别的办法吗?
错误是:没有重载函数“std::getline”的实例匹配参数列表
已解决。请注意已接受的答案中存在 L
前缀 '*'
。在我使用 wcin
和 wstring
(会产生编译错误的那个)对 std::getline
的注释掉调用中,我忘记使用 wchar_t
文字并使用了 char
文字代替。因此类型不匹配(string
由 char
、wstring
和 wchar_t
组成——又名宽字符)。要表示宽字符文字,需要添加 L
作为前缀,即 L'*'
.
这里是一个使用 std::wstring
、std::wcin
和 std::wcout
顺便提一下:you shouldn't mix std::cin
、std::cout
、std::cerr
和 std::wcin
、std::wcout
、std::wcerr
。如果您选择使用 std::wcin
,请仅使用 std::wcin
、std::wcout
、std::wcerr
编辑:如果你在 std::getline
中使用 std::wcin
,所有参数都必须是宽的,因为 std::getline
只得到一个字符类型的模板参数,并多次使用它: 对于流、输出字符串和分隔符。
#include <iostream>
#include <string>
int main ()
{
std::wstring text{};
std::wcout << L"Enter any arbitrary text terminated by an asterisk:" << std::endl;
std::getline (std::wcin, text, L'*');
}