当我们在字符串中插入一些字符时会发生什么?

时间:2019-06-08 17:28:00

标签: c++

我正在学习字符串类,并且想知道当我在字符串的特定位置插入美元符号或逗号时,例如已经放置在该位置的数字实际发生了什么? .insert()函数会覆盖已放置在该机芯的数字还是先移位它?

#include <iostream>
#include <string>
using namespace std;
void dollarFormat(string &);

int main ()
{
string input;

Get the dollar amount from the user.
cout << "Enter a dollar amount in the form nnnnn.nn : ";
cin >> input;
dollarFormat(input);
cout << "Here is the amount formatted:\n";
cout << input << endl;
return 0;
}

void dollarFormat(string &currency)
{
  int dp;

  dp = currency.find('.'); // Find decimal point
  if (dp > 3) // Insert commas
  {
    for (int x = dp - 3; x > 0; x -= 3)
    currency.insert(x, ",");
  }
  currency.insert(0, "$"); // Insert dollar sign
}

Program Output with Example Input Shown in Bold
Enter a dollar amount in the form nnnnn.nn: 1084567.89 [Enter]
Here is the amount formatted:
$1,084,567.89

1 个答案:

答案 0 :(得分:0)

如果在字符串中插入一个字符,则插入点右边的所有字符都将移到右边,然后该字符将覆盖插入点上的现有字符。可能需要重新分配字符串以容纳额外的字符。

覆盖然后转移不会阻止(尝试将其拖出)。