字符串的遍历

#include<iostream>
using namespace std;
void getChar1(char *str);
void getChar2(char *str);
int main(void)
{
    //字符指针用串常量初始化。分两步进行,首先申请堆空间,然后填入串值
    char *str="I Love ShangHai";   //cin>>str;
    getChar1(str);
    getChar2(str);
    getchar();
}
void getChar1(char *str)
{
    while(*str!=‘\0‘)
    {
        cout<<*str;
        str++;
    }
    cout<<endl;
}
void getChar2(char *str)
{
    int len=strlen(str);
    for(int i=0;i<len;i++)
    {
        cout<<str[i];
    }
    cout<<endl;
}

“I Love ShangHai” C++会自动在串常量加上‘\0’表示结束。‘\0’的ASCII码值为0,代表一个空操作。while(*str) 和while(*str!=‘\0‘)是一个意思。

字符指针必须必须先申请堆空间,然后才能填入值。看看下面程序会出现什么问题。

#include<iostream>
using namespace std;
void getChar1(char *str);
int main(void)
{
    char *str;
    cin>>str;
    getChar1(str);
    getchar();

}
void getChar1(char *str)
{
    while(*str!=‘\0‘)
    {
        cout<<*str;
        str++;
    }
    cout<<endl;
}

f7成功编译。但是编译成功后运行时,直接奔溃。因为str 仅仅是一个字符指针,没有地方存输入的值。

#include<iostream>
using namespace std;
void getChar1(char *str);
int main(void)
{
    //字符指针用串常量初始化。分两步进行,首先申请堆空间,然后填入串值
    char *str="I Love ShangHai";
    cin>>str;
    getChar1(str);
    getchar();

}
void getChar1(char *str)
{
    while(*str!=‘\0‘)
    {
        cout<<*str;
        str++;
    }
    cout<<endl;
}

f7成功编译。编译成功后运行f5,程序直接奔溃。正确做法应该这样......

#include<iostream>
using namespace std;
int main(void)
{
    char *str=new char[80];
    cout<<"输入一个字符串: ";

    for(int i=0;i<strlen(str);i++)
    {
        cout<<str[i];
    }
    cout<<endl;

    delete []str;
    str=NULL;
}

字符串的遍历,布布扣,bubuko.com

时间: 2024-10-12 08:19:33

字符串的遍历的相关文章

java11-4 字符串的遍历以及字符串中各类字符的统计

1.需求:获取字符串中的每一个字符   分析: A:如何能够拿到每一个字符呢?  char charAt(int index) B:我怎么知道字符到底有多少个呢? int length() 1 public class StringTest { 2 public static void main(String[] args) { 3 // 定义字符串 4 String s = "helloworld"; 5 for (int x = 0; x < s.length(); x++)

sql 语句系列(字符串的遍历嵌入删除与统计)[八百章之第十一章]

遍历字符串 我觉得首先要提出一个疑问: 一个数据库本身就是用于存储的,遍历字符串究竟有何意义? 先看如何实现的,毕竟sql service 是没有for循环,也没有loop和while的. select SUBSTRING(e.ENAME,t.ID,1) as sub from emp e,T10 t where e.ENAME='JONES' and t.ID<=len(e.ENAME) 的确是遍历了这个字符串JONES. 原理也十分的简单: select * from T10 T10 可以看

Java 正确遍历字符串

Java字符串是一系列的Unicode字符序列,但是,它却常常被误认为是char序列.于是,我们经常这样来遍历字符串: package testchar; public class TestChar2 { public static void main(String[] args) { String s = "\u0041\u00DF\u6771\ud801\uDC00"; for(int i = 0; i < s.length(); i++) { System.out.prin

字符串遍历和长度的三种方法

//字符串的长度(3种方法) func demo1() { let str = "hello world你好" // 1>返回指定编码的对应的字节数量 //URF8的编码(0~4个),每个汉字是3个字节 print(str.lengthOfBytes(using: .utf8)) // 2>字符串长度- 返回字符的个数<推荐使用> print(str.characters.count) // 3>使用NSString中转 /** str as NSStri

ES6: 字符串的扩展

1.字符的 Unicode 表示法 Javascript 允许采用 \uxxxx 形式表示一个字符,其中"xxxx"表示一个字符的码点 但是,这种表示法只限于 \u0000 -- \uffff 之间的字符.超出这个范围的字符,必须用两个双字节的形式表达 上面代码表示,如果直接在"\u"后面跟上超过 0xFFFF 的数值(比如 \u20bb7),Javascript会理解成 "u\20bb+7".由于 \u20bb 是一个不可打印字符,所以只会显示

35 - 找出字符串中第一个只出现一次的字符

在一个字符串中找到第一个只出现一次的字符. 如输入"abaccdeff",输出'b' 解析: 使用一个数组,记录每个字符出现的次数,最后遍历计数数组,第一个个数为 1 的即为结果. 由于字符char,只有8 bit, 只有255种可能,因此只需声明一个255大小的数组. 遍历一次字符串,遍历2次计数数组:时间复杂度O(n) 空间占用255*int = 512 Byte,是一个固定大小:空间复杂度O(1) 当需要统计某个或某些字符是否出现或出现在字符串中的次数时,可以通过数组实现一个简易

统计NSString中英文字符串长度

计算NSString的字符长度,用length方法Returns the number of Unicode characters in the receiver,既是英文字符和中文汉字都是一个字符长度,如@“abcde我的”长度为7,而此长度和微博的输入字数实际上是不符的,在微博中,它的长度为5(实际是4.5,“abcde我的f” 的长度也是5),所以如果在UITextView中限制字符的长度,需要重新计算,如下: -------------------- 转载:http://mobileso

swift 2.0 语法 字符串

//: Playground - noun: a place where people can play import UIKit /*: 字符串 * OC中的字符串是一个对象, Swift中的字符串是一个结构体 * OC中的字符串以\0结尾, Swift中的字符串不是以\0结尾 * Swift中的字符串比OC中的字符的性能要好 * Swift中的字符串支持遍历 */ let str = "abc\0def" print(str) // 遍历字符串 for c in str.chara

【C】字符串的输入,求输入字符串中最长的单词

首先,基本目标很简单,就是利用C语言:编写一个函数,输入一行字符,将此行字符中的最长的单词输出. 代码如下: #include<stdio.h> void input(char s[]){ int i=0; for(int c;(c=getchar())!='\n';i++){ s[i]=c; } s[i]='\0';//读取完成,记得对这个字符数组封口 } char* findmax(char s[]){ int max=0,word_length=0,p=0,i=0;//这个p是用来记录最