C++ 字符串函数
c++ string function
>我正在尝试创建一个可从主函数调用的字符串函数,但这会产生分段错误...有什么想法吗???
也可以创建一个返回字符串的字符串函数。
#include <iostream>
#include <stdio.h>
#include <sstream>
using namespace std;
string callMe(string& k){
cout << "String from callMe: " << k;
}
int main(){
string k;
k = "K SHK";
cout << "String from main function: " << k << endl;
callMe(k);
}
更新:
它的编译很好..
[root@server dev]# ./stringtest
String from main function: K SHK
Segmentation fault
你的函数callMe
应该返回一个字符串,但你永远不会返回任何内容。
如果您启用了编译器警告,则会警告您(我建议添加 -Wall 和 -Wextra)
可以将返回类型从 string
更改为 void
来解决。
然而,main
函数不需要 return 语句(但对于初学者来说,最好只添加 return 0;
从C++标准:
main中的 return 语句具有离开 main 函数的效果(使用自动存储销毁任何对象 持续时间)并使用返回值作为参数调用 std::exit。如果控制到达主的末端没有 遇到 return 语句,效果是执行 "return 0;"
问题是你已经将你的函数声明为返回一个string
,但不返回一个。
有两种方法可以修复它:
-
如果不打算返回字符串,请将
callMe
更改为void callMe(string& k);
-
如果您确实打算返回一个字符串,那么通过添加 return 语句来执行此操作,例如
return "I'm returned from callMe, called with " + k;
此外,一些样式注释:
-
在可能的情况下,最好在定义点初始化变量。在你的情况下,你会写:
string k = "K SHK";
或
string k("K SHK");
如果您不打算在之后修改字符串,您还可以考虑将 is 定义为
const
以捕获意外更改(例如,通过使用=
而不是==
):string const k = "K SHK";
-
如果不更改
callMe
中的参数,则应使用对 const 的引用:void callMe(string const& k);
或
string callMe(string const& k);
这将允许您对常量字符串和字符串文本调用函数,如callme("I'm a string literal");
void callMe(string& k){
cout << "String from callMe: " << k;
}
由于您已将 Callme 声明为返回字符串的函数,而另一方面您只返回任何内容,因此此类代码可能会导致分段错误。(因为 eax 中的值是未定义的)。
callMe() 和 main() 函数必须返回一些东西...
在你的函数callMe
中没有return
。尝试:
void callMe(string& k)
{
cout << "String from callMe: " << k;
}
main()
函数必须返回一个int
(通常为 0)。
Ps:如果你不修改函数中的字符串k,请使用常量引用const string&
。
也可以创建一个返回字符串的字符串函数。 当然。 对上面的原始代码稍作修改,它看起来像这样......
string callMe(string& k){
string returnValue("String from callMe: ");
returnValue += k;
cout << returnValue << endl;
return returnValue;
}
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何从void函数输出字符串
- 使用用户定义函数的字符串反转
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- 在c++构造函数中使用随机字符串生成器
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- C++:如何使函数只返回作为列表一部分的字符串
- 如何在C++中的同一函数中使用字符串和双精度
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 使用自定义比较函数使用std::sort()对矢量字符串进行排序时出现问题
- 一个函数,用于查找字符串1包含字符串2 c++的次数
- 对函数 PlaySound 使用字符串变量
- 具有多个模板的模板函数,用于特定数据类型(如字符串)?
- 字符串化递归的"std::vector<std::vector<...>>"而不使用部分模板函数专用化
- Visual c ++,使用字符串引用/指针调用 dll 函数
- 构造函数字符串参数未设置窗口标题
- C++默认构造函数:字符串参数与字符串参数()
- 使用函数C++字符串输入
- c++模板函数字符串类型不匹配