社区
C++ 语言
帖子详情
string.assign产生异常后string=""会有什么后果?
Soft_micro
2006-06-22 03:53:43
string str("aaa");
str.assign(str,str.find('b'),str.length());
str = "";
...全文
474
5
打赏
收藏
string.assign产生异常后string=""会有什么后果?
string str("aaa"); str.assign(str,str.find('b'),str.length()); str = "";
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fireseed
2006-06-23
打赏
举报
回复
你应该尽量避免你的程序产生异常,而不是在产生异常后来捕捉它!
Soft_micro
2006-06-23
打赏
举报
回复
改为这样呢:
string str("aaa");
try{
str.assign(str,str.find('b'),str.length());
}catch(...)
{
}
str = "";
fireseed
2006-06-22
打赏
举报
回复
find函数如果没找到会返回size_t(-1)
assign函数有多个重载,按照楼主的调用方式,会被匹配到下的assign函数
basic_string& assign(
const basic_string& _Str,
size_type off,
size_type _Count
);
其中off是源串的偏移量,看一下它的实现代码(MS VC8.0):
_Myt& __CLR_OR_THIS_CALL assign(const _Myt& _Right,
size_type _Roff, size_type _Count)
{ // assign _Right [_Roff, _Roff + _Count)
if (_Right.size() < _Roff) // 如果你给的偏移量大于源串的大小
_String_base::_Xran(); // 直接抛出异常
……
/////////////////////////////////////////////
_MRTIMP2 void __cdecl _String_base::_Xlen() // 抛出异常的实现
{ // report a length_error
_THROW_NCEE(length_error, "string too long");
}
/////////////////////////////////////////////
所以你最好这样用:
string str("aaa");
size_t nOff = str.find('b');
if ( nOff != string::npos )
{
str.assign(str, nOff,str.length());
}
str = "";
fireseed
2006-06-22
打赏
举报
回复
string str("aaa");
str.assign(str,str.find('b'),str.length());
str = "";
assign 异常后,你的程序就和你说bey bey了
Soft_micro
2006-06-22
打赏
举报
回复
没人知道?
c++中
string
的
assign
方法使用
c++中
string
的
assign
方法使用
string
的实际.h和.cpp文件是basic_
string
.h 和basic_
string
.tcc,所以
string
中
assign
也在这两个文件声明和定义; 1.
assign
的声明: basic_
string
&
assign
(const basic_
string
& __str) basic_
string
& ass...
c++
string
的详细用法(1)
assign
()
//字符串变量
string
a="123";
string
b="456"; 1.字符串直接赋值 a.
assign
(b); //等于a=b赋值,结果为 a="456" a.
assign
("789");//结果为 a="789" 2.一个字符串的子串赋值给另一个字符串 a.
assign
(b,begin,len); //从字符串b的第(begin)个字符开始向后数(len)个字符(包括begin)...
C++
string
assign
()赋值常用方法
C++
string
assign
()赋值常用方法 函数
assign
()常用在给
string
类变量赋值. 常用方法有: 1,直接用另一个字符串赋值. 如str2.
assign
(str1);即用str1给str2赋值. 2,用另一个字符串的一个子串赋值 如str3.
assign
(str1, 2, 3); 3,用一个字符串的前一段子串赋值; 如str4.
【转】std::
string
.
assign
()的用法
C++
string
类的成员函数,用于赋值操作。 函数原型:
string
&operator=(const
string
&s);把字符串s赋给当前字符串
string
&
assign
(const char *s);用c类型字符串s赋值
string
&
assign
(const char *s,int n);用c字符串s开始的n个字符赋值 s
Object.
assign
()到底是浅拷贝还是深拷贝?【Object.
assign
()的用法】
一、Object.
assign
()的用法: 1、Object.
assign
()方法的第一个参数是目标对象,后面的参数都是源对象,Object.
assign
()方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。 var obj = {}; var o1 = { a: 1 }; var o2 = { b: 2 }; var obj = Object.
assign
(obj...
C++ 语言
65,187
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章