我在string
中使用strlwr
作为数据类型时遇到问题:
string a;
cout << "Enter a":;
cin >> a;
strlwr(a);
突然间我收到错误!
“[错误] C:\ Users \ PC \ Documents \ C-Free \ Temp \ Untitled7.cpp:7:E2285在函数main()中找不到'_lstrlwr(string)'匹配”
谁能解决这个问题?
答案 0 :(得分:3)
您的代码中的第一个问题是,您有一个额外的双qoutes "
string a;
cout<<"Enter a":"; cin>>a;
// ^ this is extra
strlwr(a);
编写此代码的正确方法是
string a;
cout << "Enter a :";
cin >> a;
strlwr(a);
充分利用白色空间可以帮助您发现这种错误,但在这种特殊情况下,语法突出显示非常有用。
此外,您无法将std::string
传递给strlwr()
,但它不会指向字符串,而是指向char *
指针,或者更确切地说是c字符串。
这不是标准功能,如果您关心可移植性,则必须使用标准函数/方法。
要直接在string
对象上执行,您可以尝试这样
#include <iostream>
#include <string>
int
main(void)
{
std::string example = "ExAmPle";
for (size_t i = 0 ; i < example.size() ; ++i)
{
char character = tolower(example[i]);
example[i] = character;
}
std::cout << example;
return 0;
}
答案 1 :(得分:2)
strlwr
不是C ++库的一部分。因此它不起作用。你可以使用: -
for (char &ch:a)
{
ch = tolower(ch);
}
答案 2 :(得分:0)
还有另一种方法可以让链接器无法找到_lstrlwr。 我在Embarcadero®C++ Builder 10 Seattle Version 23.0.20618.2753上, 并且经常遇到这样的问题,尤其是在新项目中处理头文件的顺序之后。
关闭pre =编译的头文件一段时间,直到项目更稳定。我来到这里是因为我也失踪了_lstrlwr以及其他投诉。关闭PCH解决了所有这些问题。