将“12345678”转换为“1-234-5678”,我的代码什么也没有产生

时间:2017-02-08 00:12:34

标签: c++ arrays string cout

它没有显示任何错误,但出于某种原因我的cout不会出现。我错过了什么吗?我正在尝试将一系列数字转换为典型的电话号码格式。

int numberCount = 0;
string phoneNumberUnform = "12345678";
for (size_t i = 0; i < phoneNumberUnform.length(); i++)
{
    numberCount++;
}
if (numberCount = 8)
{
    string phoneNumber[10];
    phoneNumber[0] = phoneNumberUnform[0];
    phoneNumber[1] = "-";
    for (int i = 2; i = 5; i++)
    {
        phoneNumber[i] = phoneNumberUnform[i-1];
    }
    phoneNumber[6] = "-";
    for (int i = 7; i = 10; i++)
    {
        phoneNumber[i] = phoneNumberUnform[i-1];
    }   
    cout << phoneNumberUnform;
    cout << phoneNumber;
    return 0;
}

1 个答案:

答案 0 :(得分:7)

使用std :: string&#39; s insert成员函数:

#include <iostream>
#include <string>

int main() {
    std::string s = "123456789";
    s.insert(1, "-");
    s.insert(5, "-");
    std::cout << s;
    return 0;
}

对于手动方法,请调整原始字符串的大小以容纳另外两个字符:

std::string s = "123456789";
std::string temp = s;
int strlen = temp.length();
s.resize(s.length() + 2);

s[1] = '-';

for (int i = 2; i < 5; i++)
{
    s[i] = temp[i - 1];
}
s[5] = '-';
for (int i = 6; i < strlen + 2; i++)
{
    s[i] = temp[i - 2];
}

在第二个循环中使用temp[i - 2]索引而不是temp[i - 1]索引,因为那时我们已经将两个-字符插入到原始字符串中。