Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 什么';下面的代码怎么了? #包括 #包括 使用名称空间std; 内部主(空) { 字符串a; cin>>a; a、 擦除(a.end()-1); a、 擦除(a.开始()+1); 字符串ge=“oae”; a、 插入(a.begin()+1,通用电气); cout_C++_String - Fatal编程技术网

C++ 什么';下面的代码怎么了? #包括 #包括 使用名称空间std; 内部主(空) { 字符串a; cin>>a; a、 擦除(a.end()-1); a、 擦除(a.开始()+1); 字符串ge=“oae”; a、 插入(a.begin()+1,通用电气); cout

C++ 什么';下面的代码怎么了? #包括 #包括 使用名称空间std; 内部主(空) { 字符串a; cin>>a; a、 擦除(a.end()-1); a、 擦除(a.开始()+1); 字符串ge=“oae”; a、 插入(a.begin()+1,通用电气); cout,c++,string,C++,String,a.insert(a.begin()+1,ge);是问题所在 string::insert函数将int作为第一个参数,您正在传入一个迭代器。您想做什么?a.insert(a.begin()+1,ge);是问题所在 string::insert函数将int作为第一个参数,并传入迭代器。您想做什么? 需要 a.insert(a.begin()+1, ge); 或 否则该代码无效。 需要 a.insert(a.begin()+1, ge); 或 否则该代码无效。工作版本: a.insert(1,

a.insert(a.begin()+1,ge);
是问题所在

string::insert
函数将int作为第一个参数,您正在传入一个迭代器。您想做什么?

a.insert(a.begin()+1,ge);
是问题所在

string::insert
函数将int作为第一个参数,并传入迭代器。您想做什么?

需要

a.insert(a.begin()+1, ge);

否则该代码无效。

需要

a.insert(a.begin()+1, ge);

否则该代码无效。

工作版本:

a.insert(1, ge);
#包括
#包括
使用名称空间std;
内部主(空)
{
字符串a;
cin>>a;
a、 擦除(a.end()-1);
a、 擦除(a.开始()+1);
字符串ge=“oae”;
a、 插入(1,ge);//此处
cout工作版本:

a.insert(1, ge);
#包括
#包括
使用名称空间std;
内部主(空)
{
字符串a;
cin>>a;
a、 擦除(a.end()-1);
a、 擦除(a.开始()+1);
字符串ge=“oae”;
a、 插入(1,ge);//此处

cout没有使用迭代器和参数集的
std::string::insert()
重载。您可以选择使用:

#include <iostream>
#include <string>
using namespace std;
int main(void)
{
    string a;
    cin>>a;
    a.erase(a.end()-1);
    a.erase(a.begin()+1);
    string ge = "oae";
    a.insert(1, ge);          // here
    cout<<a<<endl;
    return 0;
}
或:

请注意,这将允许您的代码进行编译,但可能存在一些运行时问题,例如:

  • 如果
    a
    是空字符串,则
    a.end()-1
    未定义
  • 如果
    a
    是空字符串,则
    a.begin()+1
    同样未定义

没有使用迭代器和
string
参数集的
std::string::insert()
重载。您可以选择使用:

#include <iostream>
#include <string>
using namespace std;
int main(void)
{
    string a;
    cin>>a;
    a.erase(a.end()-1);
    a.erase(a.begin()+1);
    string ge = "oae";
    a.insert(1, ge);          // here
    cout<<a<<endl;
    return 0;
}
或:

请注意,这将允许您的代码进行编译,但可能存在一些运行时问题,例如:

  • 如果
    a
    是空字符串,则
    a.end()-1
    未定义
  • 如果
    a
    是空字符串,则
    a.begin()+1
    同样未定义

编译器给了您什么错误?还有,哪个编译器?可能您使用的是非标准编译器,或者使用的选项导致其行为不标准。编译器给了您什么错误?还有,哪个编译器?可能您使用的是非标准编译器,或者使用的选项导致其行为不标准n标准方式。std::basic_string::insert的重载不接受int参数。一些重载接受
size_t
参数,但没有一个接受int。@Billy:有趣的是,我的编译器抛出了:错误C2664:'std::basic_string&std::basic_string::insert(无符号int,const std::basic_string&)“:无法将参数1从“std::_String_iterator”转换为“unsigned int”我想我应该说“unsigned int”.Size_t是编译器上unsigned int的typedef。但是,标准并没有这样定义它。它可以是unsigned long、unsigned long、unsigned short或任何其他类似类型,并且符合标准。std::basic_string::insert的重载都不会使用int参数。有些重载使用
Size_t
参数,但@Billy:有趣的是,我的编译器吐出了:错误C2664:'std::basic_string&std::basic_string::insert(unsigned int,const std::basic_string&)':无法将参数1从'std::_string_iterator'转换为'unsigned int',我想我应该说“unsigned int”.Size_t是编译器上unsigned int的typedef。但是,标准并没有这样定义。它可以是unsigned long、unsigned long、unsigned short或任何其他类似类型,并符合标准。+1因为它是正确的,而且您是新的,但在将来,您不可能仅仅因为发布更正的代码而被提升e、 你需要解释为什么代码一开始就不正确。+1因为它是正确的,而且你是新来的,但在将来,你不太可能仅仅因为发布更正的代码而获得提升。你需要解释为什么代码一开始就不正确。
a.insert( 1, ge);   // use an index and a string
a.insert( a.begin()+1, ge.begin(), ge.end());  // use an destination iterator, and 
                                               //  a set of iterators indicating a range