Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.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

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++ 将连字符插入字符串C++;_C++_String - Fatal编程技术网

C++ 将连字符插入字符串C++;

C++ 将连字符插入字符串C++;,c++,string,C++,String,我有一个电话号码字符串数组,我必须在其中插入连字符。我应该使用什么字符串函数,如何使用? 谢谢使用STL字符串函数。迭代字符串数组,并对每个字符串执行以下操作: str_num = str_num.substr(0,3) + "-" + str_num.substr(3,3) + "-" + str_num.substr(6,4); 编辑:你可以使用插入()/,我想这是一个更好的方法。 < p>嗯,我不会给出答案,但是最简单的方法是使用这个方法,假设你正在做C++。 对于C字符串,您必须手动复

我有一个电话号码字符串数组,我必须在其中插入连字符。我应该使用什么字符串函数,如何使用?
谢谢使用STL字符串函数。迭代字符串数组,并对每个字符串执行以下操作:

str_num = str_num.substr(0,3) + "-" + str_num.substr(3,3) + "-" + str_num.substr(6,4);

<>编辑:你可以使用<代码>插入()/<代码>,我想这是一个更好的方法。

< p>嗯,我不会给出答案,但是最简单的方法是使用这个方法,假设你正在做C++。
对于C字符串,您必须手动复制周围的字符。我可能会使用
sprintf

您可以使用
strtok
函数将其拆分为令牌

char * strtok ( char * str, const char * delimiters );

您需要在每个字符串的两个特定位置添加两个字符

创建一个函数,该函数接受单个电话号码字符串,并在适当的位置添加连字符。这是一个很好的例子,只需使用字符串连接就很容易了,但这是一个坏习惯。相反,您可以使用
string::insert()
在适当的位置放置连字符

一旦编写了这个简单的函数,您所要做的就是迭代数组并在每个元素上应用该函数。巧合的是,
for_each()
函数可以做到这一点。您可以在
中找到它

#包括
#包括
使用连字符无效(字符串和电话)
{
//如上所述
}
// ...
{
对于每个数组(数组、数组+数组长度和带连字符);
}

这是一个家庭作业问题吗?你想把连字符放在哪里?请给出一个输入电话号码及其相应的输出电话号码的示例。您的字符串是
std::string
实例还是
char*
s?是的,这是一个家庭作业3823920578=382-392-0578@Andrei今晚有这么多人!这是非常低效的,它会产生一些不必要的字符串副本。strncat将是更有用的C风格字符串函数。您需要至少三个单独的调用
strcat
或类似的调用,或者您可以执行类似于
sprintf(buf,“%.3s-%.3s-%.4s”,s,s+3,s+6)
。只是风格的问题,真的。没有分隔符就不能拆分。10位数字中的分隔符在哪里,以便将其拆分为(3,3,4)位?@Joy Dutta我同意,但当我发布答案时,我想到了另一件事。现在我会使用迭代器。
#include<string>
#include<algorithm>

void with_hyphens(string& phone)
{
    // as explained above
}

// ...
{
    for_each(array, array + ARRAY_LENGTH, &with_hyphens);
}