在 cpp 中的双引号之间存储子字符串
Store substring between double quotes in cpp
我正在实现 ALV 树,我需要从命令行读取输入。
命令示例如下:
插入“NAME_ANYTHING_IN_QUOTES_$”ID
其中NAME_ANYTHING_IN_QUOTES_$是存储在AVL树中的数据,ID用于决定信息是否存储在左子树或右子树中子树。
代码片段如下:
if (comand == "insert")
{
int ID = 0;
string Name;
cin >> Name;
cin >> ID;
root = insertInfo(root, Name, ID);
}
我不知道如何扫描两个双引号之间的子字符串。
谢谢。
使用std::quoted
:
std::string name;
std::cin >> std::quoted(name);
我只是在上面添加 HolyBlackCat 的回答。
这是有效的代码:
#include <iostream>
#include <iomanip>
using namespace std;
int main(int argc, const char** argv)
{
//if (comand == "insert")
{
int ID = 0;
string Name;
cin >> std::quoted(Name);
cin >> ID;
cout << "name is " << Name << " and ID is " << ID << endl;
//root = insertInfo(root, Name, ID);
}
}
当输入为“MyName_$”时 34
我得到
名字是 MyName_$,ID 是 34
所以,HolyBlackCat 的解决方案有效。向我们展示您的代码和输入。
转念一想,那些奇怪的左大括号和右大括号可能取决于字体等。std::quoted 应该对你有用,但你说它不起作用。让我们知道您使用的环境和编译器。如果您确定它们始终存在,您可以删除该字符串中的第一个和最后一个字符,如:
#include <iostream>
#include <string>
using namespace std;
int main(int argc, const char** argv)
{
//if (comand == "insert")
{
int ID = 0;
string Name;
cin >> Name;
Name.erase(0, 1);
Name.erase(Name.length() - 1, 1);
cin >> ID;
cout << "name is " << Name << " and ID is " << ID << endl;
//root = insertInfo(root, Name, ID);
}
}
我找到了答案....
string name,ID,concat;
getline(cin, concat);
for(int i =0; i< concat.length();i++){
if(!isdigit(concat[i])&& concat[i] != 34){
name += concat[i];
}
if(isdigit(concat[i])){
ID += concat[i];
}
}
cout<<"name is ->"<<name<<endl;
cout<<"ID is ->"<<ID<<endl;
我正在实现 ALV 树,我需要从命令行读取输入。
命令示例如下:
插入“NAME_ANYTHING_IN_QUOTES_$”ID
其中NAME_ANYTHING_IN_QUOTES_$是存储在AVL树中的数据,ID用于决定信息是否存储在左子树或右子树中子树。
代码片段如下:
if (comand == "insert")
{
int ID = 0;
string Name;
cin >> Name;
cin >> ID;
root = insertInfo(root, Name, ID);
}
我不知道如何扫描两个双引号之间的子字符串。
谢谢。
使用std::quoted
:
std::string name;
std::cin >> std::quoted(name);
我只是在上面添加 HolyBlackCat 的回答。
这是有效的代码:
#include <iostream>
#include <iomanip>
using namespace std;
int main(int argc, const char** argv)
{
//if (comand == "insert")
{
int ID = 0;
string Name;
cin >> std::quoted(Name);
cin >> ID;
cout << "name is " << Name << " and ID is " << ID << endl;
//root = insertInfo(root, Name, ID);
}
}
当输入为“MyName_$”时 34
我得到
名字是 MyName_$,ID 是 34
所以,HolyBlackCat 的解决方案有效。向我们展示您的代码和输入。
转念一想,那些奇怪的左大括号和右大括号可能取决于字体等。std::quoted 应该对你有用,但你说它不起作用。让我们知道您使用的环境和编译器。如果您确定它们始终存在,您可以删除该字符串中的第一个和最后一个字符,如:
#include <iostream>
#include <string>
using namespace std;
int main(int argc, const char** argv)
{
//if (comand == "insert")
{
int ID = 0;
string Name;
cin >> Name;
Name.erase(0, 1);
Name.erase(Name.length() - 1, 1);
cin >> ID;
cout << "name is " << Name << " and ID is " << ID << endl;
//root = insertInfo(root, Name, ID);
}
}
我找到了答案....
string name,ID,concat;
getline(cin, concat);
for(int i =0; i< concat.length();i++){
if(!isdigit(concat[i])&& concat[i] != 34){
name += concat[i];
}
if(isdigit(concat[i])){
ID += concat[i];
}
}
cout<<"name is ->"<<name<<endl;
cout<<"ID is ->"<<ID<<endl;