gpt4 book ai didi

c++ - 使用 *argv[] 的异常输出

转载 作者:行者123 更新时间:2023-11-27 23:50:21 24 4
gpt4 key购买 nike

我正在尝试将 argv[] 的字符串元素打印到控制台,但无论出于何种原因,我得到的输出都是无意义的。我的测试回文的程序似乎运行正常。唯一关闭的部分是当我尝试将元素 int argv[] 输出到我刚刚测试为回文的控制台时。

这是我处理这个问题的代码:

for (int i = 1; i < argc; i++) {
string s(argv[i]);
printf("s: %s\n",s);
if (ignoreCase) {
for (int j = 0; j < s.size(); j++) {
tolower(s.at(j));
}
}
if (ignoreSpaces) {
s = removeSpaces(s);
}
if (isPalindrome(s, 0, s.size() - 1)) {
printf("%s is a palindrome.\n",s);
}
else {
printf("%s is not a palindrome.\n",s);
}
}

这是我得到的输出: enter image description here

最佳答案

既然你说你不能使用 cout,那么你没有正确使用 printf。您正在使用 printfprintf 不知道任何 (std::string) 的参数,因此您的程序正在调用未定义的行为。

解决方法是使用 printf 知道的类型。由于 std::string 有一个返回 const char *c_str() 函数,请改用它。

所以不要像这样行:

printf("s: %s\n",s);

这样做:

printf("s: %s\n",s.c_str());

关于c++ - 使用 *argv[] 的异常输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46945623/

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