我试图将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);
}
}
答案 0 :(得分:3)
由于您说您无法使用cout
,因此您未正确使用printf
。您使用printf
的参数printf
不知道(std::string
),因此您的程序正在调用未定义的行为。
修复方法是使用printf
知道的类型。由于std::string
的{{1}}函数返回c_str()
,因此请使用该函数。
所以不要使用这样的行:
const char *
这样做:
printf("s: %s\n",s);