非常烦人,copy_if不是在C++中.有谁知道它是否会在C++ 0x中?
在我的一本书中有一篇关于人们将逗号输入整数并弄乱你的程序的评论,但它没有详细说明.这让我思考,所以我尝试编写一个小算法来获取std :: string并删除所有非整数字符.此代码编译但跳过输出.为什么没有任何内容被分配给newstring?if(isdigit(fstring [i]))是否评估为指向持有数字的地址为真?
//little algorithm to take the non-integers out of a string
//no idea on efficiency
#include <iostream>
#include <string>
int main()
{
std::cout << "Enter a number with non-integer characters: ";
std::string fstring;
getline(std::cin, fstring);
std::string newstring;
int i = 0, x = 0;
while (i != fstring.length())
{
if (isdigit(fstring[i]))
{
newstring[x] = fstring[i];
i++;
x++;
}
else
{
i++;
}
}
std::cout << std::endl;
std::cout << newstring;
system("PAUSE");
}
Run Code Online (Sandbox Code Playgroud)
次要问题,可能属于其他地方:如何将字符串转换为int(或浮点数)?
这意味着允许用户输入他/她希望搜索的姓名,联系人和地址.我想要做的是显示所有应用pred的对象是真的,但我似乎无法让它工作.
static string searchName, searchContact, searchAddress;
bool search_User(User &u)
{
return (u.getName() == searchName && u.getContact() == searchContact && u.getAddress() == searchAddress);
}
void searchUser(vector<User> &u)
{
cout << "Name of user: ";
getline(cin, searchName);
cout << "Contact of tutor: ";
getline(cin, searchContact);
cout << "Adress of user: ";
getline(cin, searchAddress);
vector<User>::iterator i;
i = find_if(u.begin(), u.end(), search_User);
cout << i->getName() << i->getContact() << i->getAddress() << endl;
}
Run Code Online (Sandbox Code Playgroud) 所以最近我开始讨论如何解决问题,具体问题是:如何找到所有pallindromes在1到100万之间.我说,"使用atoi创建一个字符串,使用for循环来反转字符串,使用strcmp来比较有问题的字符串.
几分钟后,有人问"你为什么要在C++中使用C风格的解决方案." 我发现自己混淆了一种简单的,更"C++"的解决方法,直接易懂的代码.有人照顾我这个吗?
编辑:itoa not atoi