#include <iostream>
#include <string> // 把cstring改为string
using namespace std;
string不是标准库的,cin不支持。需要加头文件。
#include<iostream>
#include<cstring>
using namespace std;
class string
{
private:
char str;
public:
string(char s);
~string(){delete str;};
int getlen(){return strlen(str)+1;}
char get(){return str;}
void print();
};
string::string(char s)
{
str=new char[strlen(s)+1];
strcpy(str,s);
cout<<"constructing string"<<endl;
}
void string::print()
{
cout<<"原数组为:"<<str<<endl;
}
class editstring : public string
{
private:
char str;
unsigned int cursor;
public:
editstring(char s);
~editstring(){delete str;};
void setcurright()
{
if(cursor<strlen(str)+1)
cursor++;
cout<<"光标点右移为:"<<cursor<<endl;
};
void setcurleft()
{
if(cursor>0)
cursor--;
cout<<"光标点左移为:"<<cursor<<endl;
};
void insert(char c);
void deletes();
char get(){return str;}
void replace(char c);
void print();
};
editstring::editstring(char s):string(s)
{
str=new char[strlen(s)+1];
strcpy(str,s);
cursor=0;
cout<<"constructing editstring"<<endl;
}
void editstring::insert(char c)
{
cout<<"插入字母:"<<c<<""<<endl<<"目前光标点为"<<cursor<<""<<endl;
int max=strlen(str)+1;
max++;
char temp=new char[max];
strcpy(temp,str);
str=new char[max];
strcpy(str,temp);
unsigned int j;
for(j=cursor;j<max-1;j++)
{
str[j+1]=temp[j];
}
str[cursor]=c;
delete []temp; //delete temp一样吗?
}
void editstring::deletes()
{
cout<<"删除函数被调用。"<<endl<<"目前光标点为"<<cursor<<""<<endl;
int max=strlen(str)+1;
int i=0;
for(i=cursor;i<max;i++)
{
str[i]=str[i+1];
}
i--;
str[i]='\0';
}
void editstring::replace(char c)
{
cout<<"替换函数被调用。"<<endl<<"目前光标点为"<<cursor<<""<<endl;
str[cursor]=c;
}
void editstring::print()
{
cout<<"编辑后的数组为:"<<str<<endl;
}
void main()
{
editstring p("china");
pstring::print();
psetcurright();
psetcurright();
psetcurleft();
pdeletes();
peditstring::print();
pinsert('a');
peditstring::print();
pdeletes();
peditstring::print();
preplace('s');
peditstring::print();
}
测试通过
你发的那个地址的程序漏了一点点东西,另外string名称有冲突。
你用的是vs2005或以上吧?
1, 把我下面修正好的程序放到一个文本文件中,并把文件叫作acpp
2, 打开:开始->程序->Microsoft Visual Studio 2005->Visual Studio Tool->Visual Studio 2005命令提示符
3, 在打开的黑窗中输入cl 文件的路径,比如你的acpp在D盘。就输入cl d:\acpp
4, 在acpp同路径文件夹里面会生成aexe和aobj,这样就可以了。双击aexe运行。
程序:
#include<iostream>
#include<cstring>
#include<stdlibh>
using namespace std;
class mystring
{
private:
char str;
public:
mystring(char s);
~mystring(){delete str;};
int getlen(){return strlen(str)+1;}
char get(){return str;}
void print();
};
mystring::mystring(char s)
{
str=new char[strlen(s)+1];
strcpy(str,s);
cout<<"constructing string"<<endl;
}
void mystring::print()
{
cout<<"原数组为:"<<str<<endl;
}
class editstring : public mystring
{
private:
char str;
unsigned int cursor;
public:
editstring(char s);
~editstring(){delete str;};
void setcurright()
{
if(cursor<strlen(str)+1)
cursor++;
cout<<"光标点右移为:"<<cursor<<endl;
};
void setcurleft()
{
if(cursor>0)
cursor--;
cout<<"光标点左移为:"<<cursor<<endl;
};
void insert(char c);
void deletes();
char get(){return str;}
void replace(char c);
void print();
};
editstring::editstring(char s):mystring(s)
{
str=new char[strlen(s)+1];
strcpy(str,s);
cursor=0;
cout<<"constructing editstring"<<endl;
}
void editstring::insert(char c)
{
cout<<"插入字母:"<<c<<""<<endl<<"目前光标点为"<<cursor<<""<<endl;
int max=strlen(str)+1;
max++;
char temp=new char[max];
strcpy(temp,str);
str=new char[max];
strcpy(str,temp);
unsigned int j;
for(j=cursor;j<max-1;j++)
{
str[j+1]=temp[j];
}
str[cursor]=c;
delete []temp; //delete temp一样吗?
}
void editstring::deletes()
{
cout<<"删除函数被调用。"<<endl<<"目前光标点为"<<cursor<<""<<endl;
int max=strlen(str)+1;
int i=0;
for(i=cursor;i<max;i++)
{
str[i]=str[i+1];
}
i--;
str[i]='\0';
}
void editstring::replace(char c)
{
cout<<"替换函数被调用。"<<endl<<"目前光标点为"<<cursor<<""<<endl;
str[cursor]=c;
}
void editstring::print()
{
cout<<"编辑后的数组为:"<<str<<endl;
}
void main()
{
editstring p("china");
pmystring::print();
psetcurright();
psetcurright();
psetcurleft();
pdeletes();
peditstring::print();
pinsert('a');
peditstring::print();
pdeletes();
peditstring::print();
preplace('s');
peditstring::print();
getchar();
}
“未定义标识符string” 解决方法:
头文件加上
#include <iostream>
using namespace std;
string是标准库的,要加std::string,或使用using namespace
这个方法你可以试一试。希望对你有帮助
string是字符串的意思。string name就是定义一个string类型的name变量,在C++中,字符串可以使用string来声明(需要引入#include <string>)。
import javautilArrayList;
import javautilList;
import javautilregexMatcher;
import javautilregexPattern;
/
@author wsj
@date 2010-9-2, 下午04:37:05
/
public class Deal {
public static void main(String[] args) {
String s="生地30个 丹皮15,旋覆花10枚代赭石15连翘18赤芍20秦艽15郁金15姜黄10陈皮10黄连8水牛角15凌霄花15";//"北柴胡6g,酒黄芩6g,太子参15g,陈皮10g,青蒿10g,地骨皮10g,茯苓12g,麦冬10g,大枣4个,炙甘草6g,炙黄芪10g,丹皮10g,连翘10g,薄荷(后下)5g";
Pattern pattern=Patterncompile("[^,,\\s\\w]+\\d+[^,,\\W[个枚]]");
Matcher matcher=patternmatcher(s);
List<Medicine> list=new ArrayList<Medicine>();
while (matcherfind()) {
listadd(parseOne(matchergroup()));
}
/
输出结果
/
for (Medicine medicine : list) {
Systemoutprintln(medicine);
}
}
public static Medicine parseOne(String s){
char cs[]=stoCharArray();
String name="";//名称
String mount="";//剂量
String unit="";//单位
boolean isName=true;
for (char c : cs) {
if(CharacterisDigit(c)){
mount+=c;
isName=false;
}else {
if(isName){
name+=c;
}else {
unit+=c;
}
}
}
if(""equals(unit))
unit="g";
return new Medicine(name,mount,unit);
}
}
class Medicine{
private String name;//名称
private String mount;//剂量
private String unit;//单位
public Medicine(String name, String mount, String unit) {
thisname = name;
thismount = mount;
thisunit = unit;
}
public String toString(){
return name+","+mount+","+unit;
}
}
//按Ctrl+Z结束程序,程序有一个地方多了分号。
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::string;
using std::endl;
int main()
{string word;
while(cin>>word)//这儿多分号
cout<<word<<endl;
return 0;
}
这里还统计了数字字符个数和字母字符个数,并分别存储于shuzi和zimu这两个字节存储单元中。
希望能帮到你。
写一段子程序SKIPLINES,完成输出空行的功能空行的行数在AX寄存器中
[解]:
SKIPLINES PROC NEAR
PUSH CX
PUSH DX
MOV CX,AX
NEXT: MOV AH,2
MOV DL,0AH
INT 21H
MOV AH,2
MOV DL,0DH
INT 21H
LOOP NEXT
POP DX
POP CX
RET
SKIPLINES ENDP
以上就是关于一道 关于string 程序问题全部的内容,包括:一道 关于string 程序问题、编写一个程序,其中有一个简单的串类String包含设置字符串、编写一个程序,有串类STRING,等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)