gpt4 book ai didi

c++ - 如何正确使用wstrings?

转载 作者:行者123 更新时间:2023-12-03 06:57:54 26 4
gpt4 key购买 nike

我正在学习有关wstrings的信息,因为我想了解一个项目的UTF-8。我编写了一个简单的程序来测试使用wstrings的操作:

int main()
{
std::wstring test;
std::wstring test2;
std::wstring test3;
int n;

getline(std::wcin, test);

std::wcout << "\n" << test;

for (n = 0; n < test.size(); n++)
{
test[n] += n * n;
test2[n] = test[n];
}
std::wcout << test2 << "\n";

for (n = 0; n < test2.size(); n++)
{
test2[n] -= n * n;
test3[n] = test[n];
}
std::wcout << test3 << "\n";

return 0;
}
当我执行它时,出现以下错误:“字符串下标超出范围”
这是我的第一个C++“认真”项目,对您的帮助不胜感激!

最佳答案

您的test2字符串为空,因此在执行以下操作时:

test2[n] = test[n];
您在无效位置建立索引,这将导致未定义的行为。这可能导致引发异常。
相反,您可以执行以下操作:
test2.push_back(test[n]);
您对 test3有相同的问题,可以用相同的方法解决。

另外,一旦您阅读 test,就可以使用适当数量的元素来初始化 test2test3:
getline(std::wcin, test);

std::wstring test2(test.size());
std::wstring test3(test.size());
现在您可以毫无问题地索引这些字符串。

另外,对于您的问题,您甚至不需要对 test2进行任何索引编制。修改 test后,您可以像这样简单地分配它:
for (n = 0; n < test.size(); n++)
{
test[n] += n * n;
}
std::wstring test2 = test;
和类似 test3

关于c++ - 如何正确使用wstrings?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63832442/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com